import {Mesh} from '../objects/Mesh.js'
import {MeshBasicMaterial} from '../materials/MeshBasicMaterial.js'
import {SphereBufferGeometry} from '../geometries/SphereGeometry.js'

class PointLightHelper extends Mesh {
  constructor(light, sphereSize, color) {
    const geometry = new SphereBufferGeometry(sphereSize, 4, 2)
    const material = new MeshBasicMaterial({wireframe: true, fog: false, toneMapped: false})

    super(geometry, material)

    this.light = light
    this.light.updateMatrixWorld()

    this.color = color

    this.type = 'PointLightHelper'

    this.matrix = this.light.matrixWorld
    this.matrixAutoUpdate = false

    this.update()

    /*
	// TODO: delete this comment?
	const distanceGeometry = new THREE.IcosahedronBufferGeometry( 1, 2 );
	const distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );

	this.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );
	this.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );

	const d = light.distance;

	if ( d === 0.0 ) {

		this.lightDistance.visible = false;

	} else {

		this.lightDistance.scale.set( d, d, d );

	}

	this.add( this.lightDistance );
	*/
  }

  dispose() {
    this.geometry.dispose()
    this.material.dispose()
  }

  update() {
    if (this.color !== undefined) {
      this.material.color.set(this.color)
    } else {
      this.material.color.copy(this.light.color)
    }

    /*
		const d = this.light.distance;

		if ( d === 0.0 ) {

			this.lightDistance.visible = false;

		} else {

			this.lightDistance.visible = true;
			this.lightDistance.scale.set( d, d, d );

		}
		*/
  }
}

export {PointLightHelper}
